assertEquals( $shouldMatch, ParserOutput::isLinkInternal( $server, $url ) );
}
/**
* @covers ParserOutput::setExtensionData
* @covers ParserOutput::getExtensionData
*/
public function testExtensionData() {
$po = new ParserOutput();
$po->setExtensionData( "one", "Foo" );
$this->assertEquals( "Foo", $po->getExtensionData( "one" ) );
$this->assertNull( $po->getExtensionData( "spam" ) );
$po->setExtensionData( "two", "Bar" );
$this->assertEquals( "Foo", $po->getExtensionData( "one" ) );
$this->assertEquals( "Bar", $po->getExtensionData( "two" ) );
$po->setExtensionData( "one", null );
$this->assertNull( $po->getExtensionData( "one" ) );
$this->assertEquals( "Bar", $po->getExtensionData( "two" ) );
}
/**
* @covers ParserOutput::setProperty
* @covers ParserOutput::getProperty
* @covers ParserOutput::unsetProperty
* @covers ParserOutput::getProperties
*/
public function testProperties() {
$po = new ParserOutput();
$po->setProperty( 'foo', 'val' );
$properties = $po->getProperties();
$this->assertEquals( $po->getProperty( 'foo' ), 'val' );
$this->assertEquals( $properties['foo'], 'val' );
$po->setProperty( 'foo', 'second val' );
$properties = $po->getProperties();
$this->assertEquals( $po->getProperty( 'foo' ), 'second val' );
$this->assertEquals( $properties['foo'], 'second val' );
$po->unsetProperty( 'foo' );
$properties = $po->getProperties();
$this->assertEquals( $po->getProperty( 'foo' ), false );
$this->assertArrayNotHasKey( 'foo', $properties );
}
/**
* @covers ParserOutput::getText
* @dataProvider provideGetText
* @param array $options Options to getText()
* @param array $poState ParserOptions state fields to set
* @param string $text Parser text
* @param string $expect Expected output
*/
public function testGetText( $options, $poState, $text, $expect ) {
$this->setMwGlobals( [
'wgArticlePath' => '/wiki/$1',
'wgScriptPath' => '/w',
'wgScript' => '/w/index.php',
] );
$this->hideDeprecated( 'ParserOutput stateful allowTOC' );
$this->hideDeprecated( 'ParserOutput stateful enableSectionEditLinks' );
$po = new ParserOutput( $text );
// Emulate Parser
$po->setEditSectionTokens( true );
if ( $poState ) {
$wrap = TestingAccessWrapper::newFromObject( $po );
foreach ( $poState as $key => $value ) {
$wrap->$key = $value;
}
}
$actual = $po->getText( $options );
$this->assertSame( $expect, $actual );
}
public static function provideGetText() {
// phpcs:disable Generic.Files.LineLength
$text = << Test document.
One
Two
Two point one
Three
Test document.
One
Two
Two point one
Three
Test document.
One
Two
Two point one
Three
Test document.
One
Two
Two point one
Three
Test document.
One
Two
Two point one
Three
Test document.
One
Two
Two point one
Three
Test document.
One
Two
Two point one
Three
Contents
Section 1
Section 2
Section 2.1
Section 3
Contents
Section 1[edit]
Section 2[edit]
Section 2.1[edit]
Section 3[edit]
Section 1[edit]
Section 2[edit]
Section 2.1[edit]
Section 3[edit]
Contents
Section 1
Section 2
Section 2.1
Section 3
Contents
Section 1[edit]
Section 2[edit]
Section 2.1[edit]
Section 3[edit]
Contents
Section 1
Section 2
Section 2.1
Section 3
Section 1[edit]
Section 2[edit]
Section 2.1[edit]
Section 3[edit]
One
Two
Two point one
Three
EOF ], 'Unwrap without a mw-parser-output wrapper' => [ [ 'unwrap' => true ], [], ' ', ' ' ], 'Unwrap with extra comment at end' => [ [ 'unwrap' => true ], [], 'Test document.
Test document.
' ], ]; // phpcs:enable } }